Recent advances in telecommunications have brought forth the so-called digital convergence, where audio and video are being processed digitally through Internet. These emerging multimedia applications are demanding on system resources and are sensitive to runtime resource fluctuations.
However, in a network as technologically diverse as the Internet, each end node may have its own set of available system and network resources. Current Internet technology ranges from 9600-baud modems up to gigabit Ethernet with unpredictable momentary fluctuations of available resources due to network congestion or topology changes. Devices on which multimedia applications are expected to deploy present another diversity, which covers from powerful desktops or laptops to small scale personal digital assistants (PDA) or mobile phones. Since it is impossible to predict such variations at design time, adaptation is essential for optimal delivery of multimedia applications.
Traditional monolithic protocol stacks are static in nature. Firstly, application designers have to expressively specify the protocol components needed, which potentially hinders the portability of applications on different runtime platforms. Secondly, once the protocol stack is established at build time, runtime reconstruction of the stack is not allowed unless the termination and restart of current data transmission. Such static protocol stacks are surely not suitable for demanding multimedia applications over diverse runtime environments. Since the static nature of the predefined protocol stacks is limited in many ways, research of flexible protocol stacks in communication systems has been carried out in the last few years.
One such stack is an adaptive Quality of Service (QoS) framework, which offers the ability to re-configure its (protocol) components. However, the reconfiguration in this framework needs guidance from applications when violations occur since such guidance is not included in the QoS specification. As it is unlikely to anticipate all possible QoS violations at the design phase of an application, expensive software re-engineering process is needed to ‘update’ the QoS awareness of existing applications, including adding new codes and re-compilations of applications. The similar observation is found in a research project where components requiring control interfaces from lower layers must explicitly query for them when bound to a protocol service. Also, constraints in protocol composition have not been well defined by this framework, and it seems that a big part of the logic required for dynamic composition is dependent on component developers.
Another framework aims at the development of a customizable system (such as protocol stacks and I/O drivers). It sees such software as an aggregation of anonymously connected functional components. Components in this framework need to be completely independent of each other. The advantage is the reusability of functionality and a high degree of flexibility. However, in practice, constraints and dependencies are always present in the configuration of protocols. Furthermore, reflection points of this framework, which perform packet switching within a protocol stack, can only support runtime reconfiguration.
On the other hand, it is sometimes argued that different components of a multimedia stream (e.g., audio, video and text) have different proprieties and require different QoS treatments. It is proposed to construct optimized protocol stack for each of the media. The focus is to provide tailored protocol services to support diverse requirements of different media types.
Another proposed solution presents the design of an adaptive middleware platform, which assists application adaptation through open implementation and reflection. This solution introduces the concepts of “object graph” which offers a meta-interface to support the inspection and adaptation of the communication path. However, it only focuses on the inspection of and adaptation to QoS according to underlying network conditions.
Another system proposes “protocol building block” description and protocol selection algorithms. The description mainly comprises the properties provided by the protocol building block as well as its downward and upward dependencies. An algorithm to select building blocks is also presented where the selection is based on whether all specified features are provided and all dependencies of selected components are fulfilled. However, issues such as the protocol stacks synchronization among communication peers and the dynamic reconfiguration of the stack at runtime are not addressed.
Another system Dynamic Layered Protocol Stack (DLPS) of Microsoft, provides a method to dynamically build a protocol stack for data transfer. The protocol stack is also re-configurable by modifying the protocol layer descriptions and rebuilding the stack. DLPS has the objective to construct a dynamic and flexible protocol stack. However, the flexibility provided by DLPS is limited in many ways. Firstly, users must explicitly specify the name of the protocol they want. No other means of specification exist. Secondly, the protocol stack in DLPS is re-configurable by changing the protocol layer description and rebuilding the stack where current data transmission has to be terminated and restarted, thus resulting in transmission interruption Finally, there is no assurance for compatibility of protocol stacks in DLPS.
Hence, it was with knowledge of the foregoing concerns that the present invention was conceived and has now been reduced to practice.